package com.xiaolin.designmode.composite.security;

/**
 * @ClassName Component
 * @Description 抽象构件角色
 * @Detail 透明式的组合模式，在该方式中，由于抽象构件声明了所有子类中的全部方法，所以客户端无须区别树叶对象和树枝对象，对客户端来说是透明的。
 *              但其缺点是：树叶构件本来没有 Add()、Remove() 及 GetChild() 方法，却要实现它们（空实现或抛异常），这样会带来一些安全性问题。
 *              1、步骤：
 *                  1、创建抽象构件角色
 *                  2、创建树叶构件角色
 *                  3、创建树枝构件角色
 *                  4、测试
 *               2、总结：
 *                  1、角色
 *                      1、抽象构建角色
 *                      2、树叶构件角色
 *                      3、树枝构件角色
 *                      4、测试客户端
 *                  2、适用场景
 *                      组合模式可以实现当用户在商店购物后，显示其所选商品信息，并计算所选商品总价的功能
 * @Author MyPC
 * @Date 2020/11/4
 * @Version 1.0
 */
public interface Component {
    void add(Component component);
    void remove(Component component);
    Component getChildren(int index);
    void operation();
}
